# 使用类创建多线程
# 首先，我们要自定义一个类，对于这个类有两点要求，必须继承 threading.Thread 这个父类，必须覆写 run 方法。
# 这里的 run 方法，和我们上面线程函数的性质是一样的，可以写我们的业务逻辑程序，在 start() 后将会调用。
import threading
import time
from threading import Thread


# 创建子线程类，继承自 Thread 类
class MyThread(Thread):
    def __init__(self, name="Python"):
        # 注意：super().__init__() 一定要写,而且要写在最前面，否则会报错。
        super().__init__()
        self.name = name

    # 重写run()方法
    def run(self):
        for i in range(3):
            print('Hello', self.name)
            time.sleep(1)


if __name__ == '__main__':
    # 创建线程1，不指定参数
    thread1 = MyThread()
    thread1.start()
    # 创建线程2，指定参数
    thread2 = MyThread('Daniel')
    thread2.start()
    # 主线程
    print(threading.current_thread().getName())
    print(threading.current_thread())  # 主线程
    print(threading.enumerate())  # 连同主线程在内有三个运行的线程
    print(threading.active_count())
    print(threading.main_thread())  # 主线程
    print(thread2.getName())  # 线程名
